package models.common.bean;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Transient;

import common.constants.ConfConst;
import common.constants.Constants;
import common.utils.Security;

/**
 * 查询放款人的保证信息表
 * 
 * @author fanghanyong
 * @version 2018年01月23日 下午11:00:00
 */
@Entity
public class InformationAssuranceBean {

	/**
	 * 构造器
	 */
	public InformationAssuranceBean() {

	}

	@Id
	public long id;

	/** 加密ID */
	@Transient
	public String signID;

	public String getSignID() {
		return Security.addSign(this.id, Constants.BID_ID_SIGN,
				ConfConst.ENCRYPTION_KEY_DES);
	}

	/** 签字用户id */
	public long user_id;
	
	/** 申请时间 */
	public Date time;

	/** 放款人用户id */
	public long lender_id;

	/** 申请人姓名 */
	public String full_name;

	/** 放款人姓名 */
	public String lender_name;

	/** 申请最高担保额度 */
	public double request_limit;

	/** 授信编号 */
	public String credit_granting_code;
	
	/** 合同编号 */
	public String contract_id;

	/** 授信起始时间 */
	public Date start_time;

	/** 授信截止时间 */
	public Date end_time;

	/** 实际担保金额 */
	public double audit_amount;

	/** 授信申请记录签署方式 0 自动签署 1 面签' */
	public int is_pledge_management;

	/** 状态 0待签署 1已签署 2已失效 3已确认' */
	public int status;

	/** 状态 0待签署 1已签署 2已失效 3已确认' */
	public AuditResult getStatus() {
		AuditResult auditResult = AuditResult.getEnum(this.status);
		return auditResult;
	}

	public void setStatus(AuditResult auditResult) {
		this.status = auditResult.code;
	}

	public enum AuditResult {

		/** 待签署 */
		HAVE_NO_AUDIT(0, "待签署"),

		/** 已签署 */
		AUDIT_PASS(1, "已签署"),

		/** 已失效 */
		AUDIT_FAILED(2, "已失效"),

		/** 已确认*/
		AUDIT_SURE(3, "已确认");

		public int code;
		public String value;

		private AuditResult(int code, String value) {
			this.code = code;
			this.value = value;
		}

		/**
		 * 根据code取得会员类型,没有找到返回null
		 * 
		 * @description
		 * @return
		 */
		public static AuditResult getEnum(int code) {
			AuditResult[] memberTypes = AuditResult.values();
			for (AuditResult memberType : memberTypes) {
				if (memberType.code == code) {

					return memberType;
				}
			}

			return HAVE_NO_AUDIT;
		}
	}
	
	/** 签署方式  0 自动签署 1面签*/
	public ManagementResult getIs_pledge_management() {
		ManagementResult managementResult = ManagementResult.getEnum(this.is_pledge_management);
		return managementResult;
	}

	public void setIs_pledge_management(AuditResult auditResult) {
		this.is_pledge_management = auditResult.code;
	}

	public enum ManagementResult {

		/** 自动签署 */
		HAVE_NO_AUDIT(0, "自动签署"),

		/** 面签 */
		AUDIT_PASS(1, "面签");

		public int code;
		public String value;

		private ManagementResult(int code, String value) {
			this.code = code;
			this.value = value;
		}

		/**
		 * 根据code取得会员类型,没有找到返回null
		 * 
		 * @description
		 * @return
		 */
		public static ManagementResult getEnum(int code) {
			ManagementResult[] memberTypes = ManagementResult.values();
			for (ManagementResult memberType : memberTypes) {
				if (memberType.code == code) {

					return memberType;
				}
			}

			return HAVE_NO_AUDIT;
		}
	}
}
